# 递归遍历目录并添加父文件夹前缀到文件名
# :param dir_path: 要遍历的目录路径

import os
import sys

def add_parent_folder_prefix(dir_path):
    try:
        # 读取目录内容
        items: list[str] = os.listdir(dir_path)

        for item_name in items:
            full_path = os.path.join(dir_path, item_name)

            # 跳过隐藏文件/文件夹(以.开头)
            if item_name.startswith('.'):
                continue

            if os.path.isdir(full_path):
                # 递归处理子目录
                add_parent_folder_prefix(full_path)
            elif os.path.isfile(full_path):
                if dir_path == target_dir:
                    continue

                # 获取父文件夹名并提取前4个字符作为前缀
                parent_folder_name = os.path.basename(dir_path)
                prefix = parent_folder_name[:4].lower()

                # 如果文件名已经以这个前缀开头，则跳过
                if item_name.lower().startswith(prefix):
                    continue

                # 构建新文件名
                new_name = f"{prefix} {item_name}"
                new_path = os.path.join(dir_path, new_name)

                if new_name in items:
                    os.remove(full_path)
                    print(f"检测到重名字幕文件，当前文件已删除: {item_name}")
                    continue

                try:
                    # 重命名文件
                    os.rename(full_path, new_path)
                    print(f"重命名: {item_name} -> {new_name}")
                except Exception as e:
                    print(f"重命名 {item_name} 失败: {str(e)}")
    except Exception as e:
        print(f"处理目录 {dir_path} 时出错: {str(e)}")

# 目标目录
target_dir = os.path.dirname(os.path.abspath(__file__))

# 使用示例
if __name__ == "__main__":
    print("开始...")
    add_parent_folder_prefix(target_dir)
    print("结束...")
